import axios from 'axios'
import {localGet} from './index'
import router from "@/router/index"
import config from '~/config'


// 这边由于后端没有区分测试和正式，姑且都写成一个接口。
axios.defaults.baseURL = config[import.meta.env.MODE].baseUrl
// 携带 cookie，对目前的项目没有什么作用，因为我们是 token 鉴权
axios.defaults.withCredentials = true
// 请求头，headers 信息
axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'
axios.defaults.headers['Authorization'] = localGet('token') !== null ? "Bearer " + localGet('token') : ""
// 默认 post 请求，使用 application/json 形式
axios.defaults.headers.post['Content-Type'] = 'application/json'

// 请求拦截器，内部根据返回值，重新组装，统一管理。
axios.interceptors.response.use(res => {
    return res.data
}, err => {
    // 失败响应的拦截
    console.log(err)
    if (err.response) {
        // 失败响应的status需要在response中获得
        console.log(err.response)
        switch (err.response.status) {
            // 对得到的状态码的处理，具体的设置视自己的情况而定
            case 401:
                console.log('未登录')
                router.push('/login')
                break
            case 404:
                window.location.href = '/'
                break
            case 405:
                console.log('不支持的方法')
                break
            // case ...
            default:
                console.log('其他错误')
                break
        }
    }
    return Promise.reject(err)
})

export default axios